package com.beck.bee.service;

import com.beck.bee.dao.BaseDao;
import com.beck.bee.domain.Pagination;

import java.io.Serializable;
import java.util.List;

/**
 * Created by cdliubei@jd.com on 3/30/2017.
 */
public interface BaseService<T> {

    /**
     * 获取DAO操作类
     */
    BaseDao<T> getDao();

    /**
     * 添加对象
     *
     * @param t
     * @return
     */
    long insert(T t);

    /**
     * 删除对象,条件主键
     *
     * @param t
     * @return
     */
    int delete(T t);

    /**
     * 删除对象,条件主键
     *
     * @param key
     * @return
     */
    int delete(Serializable key);

    /**
     * 删除对象,主键
     *
     * @param key
     * @return
     */
    int delete(int... key);

    /**
     * 更新对象,条件主键
     *
     * @param t
     * @return
     */
    int update(T t);

    /**
     * 查询对象,条件主键
     *
     * @param key
     * @return
     */
    T select(Serializable key);

    /**
     * 查询对象,只要不为NULL与空则为条件
     *
     * @param t
     * @return
     */
    List<T> select(T t);

    /**
     * 查询对象总数
     *
     * @param t
     * @return
     */
    int selectCount(T t);

    /**
     * 获取分页数据
     *
     * @param t
     * @param page
     * @return
     */
    Pagination selectPage(T t, Pagination page);

    /**
     * 查询对象,
     *
     * @param t
     * @return
     */
    List<T> selectPage(T t);
}
